/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.admin.vo;

import cn.hutool.core.convert.Convert;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.modules.admin.entity.MaintainPlanConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;
import io.swagger.annotations.ApiModel;
import java.util.Date;
import java.util.List;

/**
 * 保养计划配置视图实体类
 *
 * @author ysq
 * @since 2022-03-09
 */
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "MaintainPlanConfigVO对象", description = "保养计划配置")
public class MaintainPlanConfigVO extends MaintainPlanConfig {
	private static final long serialVersionUID = 1L;

	@ApiModelProperty(value = "省code")
	private String provinceCode;

	@ApiModelProperty(value = "市code")
	private String cityCode;

	@ApiModelProperty(value = "区code")
	private String adCode;

	@ApiModelProperty(value = "梯号")
	private String elevatorAddress;

	@ApiModelProperty(value = "0-年审，1-非年审")
	private Integer useType;

	@ApiModelProperty(value = "1:非年审，2:年审")
	private Integer auditType;

	@ApiModelProperty(value = "项目名称")
	private String buildingName;

	@ApiModelProperty(value = "项目地址")
	private String address;

	@ApiModelProperty(value = "梯型式")
	private String modeName;

	@ApiModelProperty(value = "梯型式类型编码")
	private Long modeType;

	@ApiModelProperty(value = "项目id集合，多个逗号隔开")
	private String buildingIds;

	@ApiModelProperty(value = "任务数")
	private Long planTotal;

	@ApiModelProperty(value = "开始更新时间-变更为下次保养计划日期")
	private String startUpdateTime;

	@ApiModelProperty(value = "结束更新时间-变更为下次保养计划日期")
	private String endUpdateTime;

	/**
	 * 服务开始时间开始区间
	 */
	@ApiModelProperty(value = "服务开始时间开始区间")
	private String startTime1;
	/**
	 * 服务开始时间结束区间
	 */
	@ApiModelProperty(value = "服务开始时间开始区间")
	private String startTime2;

	/**
	 * 服务结束时间开始区间
	 */
	@ApiModelProperty(value = "服务结束时间开始区间")
	private String endTime1;

	/**
	 * 服务结束时间结束区间
	 */
	@ApiModelProperty(value = "服务结束时间结束区间")
	private String endTime2;

	@ApiModelProperty(value = "保养计划名称")
	private String templatePlanName;

	@ApiModelProperty(value = "停梯状态： 1-正常 2-停梯")
	private Integer isStop;

	@ApiModelProperty(value = "筛选未排期计划")
	private Boolean isShowNotPlanTask;

	@ApiModelProperty(value = "筛选从未排期计划的电梯")
	private Boolean notPlanTaskEle;

	@ApiModelProperty(value = "筛选待清除未来保养排期")
	private Boolean needClearFeaturePlan;

	@ApiModelProperty(value = "梯所属维保组")
	private String deptName;

	@ApiModelProperty(value = "下次保养计划执行人数量")
	private Integer nextUserCount;

	@ApiModelProperty(value = "下次保养计划执行人id")
	private String nextUserIds;

	@ApiModelProperty(value = "下次保养计划执行人名称")
	private String nextUserNames;

	@ApiModelProperty(value = "上一次维保工单id")
	private Long previousPlanId;

	@JsonFormat(pattern = DateUtil.PATTERN_DATE)
	@ApiModelProperty(value = "上一次维保签字日期")
	private Date previousPlanDate;

	@ApiModelProperty(value = "下一次维保工单id")
	private Long nextPlanId;

	@JsonFormat(pattern = DateUtil.PATTERN_DATE)
	@ApiModelProperty(value = "下一次保养计划日期")
	private Date nextPlanDate;

	@JsonFormat(pattern = DateUtil.PATTERN_DATE)
	@ApiModelProperty(value = "逾期临界日期")
	private Date overdueDate;

	@JsonFormat(pattern = DateUtil.PATTERN_DATE)
	@ApiModelProperty(value = "最末保养计划日期")
	private Date lastDate;

	@ApiModelProperty(value = "下次保养计划排期是否存在逾期风险")
	private Boolean isOverdueRisk;

	@ApiModelProperty(value = "年审梯保养合规状态 1-正常，2-明天即将违规，3-已违规")
	private Integer complianceStatus;

	@ApiModelProperty(value = "年审梯保养合规状态集合，多个逗号隔开")
	private String searchComplianceStatus;

	@ApiModelProperty(value = "维保状态集合，多个逗号隔开")
	private String searchMaintainStatus;

	@ApiModelProperty(value = "有无未来排期： 0-无 1-有")
	private Integer isPlan;

	@ApiModelProperty(value = "电梯出场编码集合")
	private List<String> factoryNumberList;

	@ApiModelProperty(value = "电梯出场编码")
	private String factoryNumber;

	@ApiModelProperty(value = "合同来源 1:外包合同2:非外包合同,-1:无状态默认值")
	private Integer fromType;

	private Long buildingUserId;

	private String buildingUserName;
	private String buildingUserNameExt;

	@ApiModelProperty(value = "其它剩余计划是否存在逾期 0-否，1-是")
	private Integer otherOverdue;

	@ApiModelProperty(value = "刷选:合同状态1:未生效2:已生效3:已到期4:已终止")
	private List<Integer> contractStatuss;

	@ApiModelProperty(value = "返回：合同状态1:未生效2:已生效3:已到期4:已终止")
	private Integer contractStatus;

	@ApiModelProperty("返回:合同结束时间")
	private Date contractEndTime;

	@ApiModelProperty("返回:合同开始时间")
	private Date contractBeginTime;

	@ApiModelProperty(value = "筛选:上一次维保签字日期")
	private String previousPlanDateOrderBy;

	@ApiModelProperty(value = "筛选:下一次保养计划日期")
	private String nextPlanDateOrderBy;

	@ApiModelProperty(value = "返回:合同id")
	private Long contractId;

	@ApiModelProperty(value = "合同编号")
	private String contractNo;


	@ApiModelProperty(value = "1:昨日未排期类型2:累计未排期类型")
	private Integer hasPlanType;

	private Integer yesterday = Convert.toInt(DateUtil.format( cn.hutool.core.date.DateUtil.yesterday(),"yyyyMMdd"));

	@ApiModelProperty("单位内编号")
	private String registerNumber;

	private List<Long> eleIds;

}
